home *** CD-ROM | disk | FTP | other *** search
/ Amiga Mag HDD Backup / Amiga Mag HDD Backup.zip / Amiga Mag HDD Backup / Alexander.img.bin / Alexander.img / 9.12 / Frawley⁄ Digital FX13 / _SeamlessMap.adpro next >
Text File  |  1983-05-04  |  4KB  |  196 lines

  1. /*
  2. ** _SeamlessMap.adpro
  3. **
  4. ** $VER: _SeamlessMap.adpro 1.1 (September 20,1994)
  5. **
  6. **
  7. ** DESCRIPTION:
  8. ** This ADPro macro turns the current image into a seamless 
  9. ** texture map suitable for tiling in any 3D animation soft-
  10. ** ware such as LightWave, Aladdin4D, and Imagine.
  11. **
  12. ** REQUIREMENTS:
  13. ** For best results, use a fairly homogenous texture.
  14. **
  15. ** NOTE:
  16. ** This will decrease the size of the original image as 
  17. ** either or both top or side "strips" need to be cropped
  18. ** and composited (overlayed), thus reducing the total 
  19. ** area of the final image. Also, this is NOT a foolproof
  20. ** method, just a quick and easy hack.
  21. **
  22. ** CREDITS:
  23. ** William Frawley (some portions adapted from ASDG macros)
  24. **
  25. ***********************************************************/
  26.  
  27. OPTIONS RESULTS
  28.  
  29. ADDRESS "ADPro"
  30.  
  31.  
  32. /*
  33. ** Save the current environment.
  34. */
  35.  
  36. TempDefaults = "T:TempADProDefaults"
  37. SAVE_DEFAULTS TempDefaults
  38.  
  39.  
  40. /*
  41. ** Ask User to Rate Degree of Homogeny of Image
  42. **
  43. ** For example, if image is not very homogenous, a larger
  44. ** strip will need to be cropped and composited for a more
  45. ** convincing appearance, and vice versa.
  46. */
  47.  
  48. OkayN '"Homogeny Rating"' '"Image Degree of Homogeny?"',
  49.   '"Homogenous|Medium|Chaotic|Cancel"'
  50. IF (RC=0) THEN CALL ErrorOut 10
  51. IF (RC=1) THEN StripRatio=10
  52. IF (RC=2) THEN StripRatio=7
  53. IF (RC=3) THEN StripRatio=5
  54.  
  55.  
  56. /*
  57. ** Ask User Whether to Tile Left/Right, Top/Bottom or Both
  58. */
  59.  
  60. OkayN '"Seam Orientation"' '"Which sides to be seamless?"',
  61.   '"Top/Bottom|Left/Right|Both|Cancel"'
  62. IF (RC=0) THEN CALL ErrorOut 10
  63. IF (RC=1) THEN SeamFlag=1
  64. IF (RC=2) THEN SeamFlag=2
  65. IF (RC=3) THEN SeamFlag=3
  66.  
  67.  
  68. /*
  69. ** Start the Processing Loop
  70. */
  71.  
  72. IF SeamFlag=1|SeamFlag=3 THEN DO     /* Process Top Strip */
  73.  
  74.   /* Get Current Image Dimensions & Save to TEMP */
  75.   XSize                                    /* Image Width */
  76.   ImageW=ADPRO_RESULT
  77.   YSize                                   /* Image Height */
  78.   ImageH=ADPRO_RESULT
  79.  
  80.   SAVER "TEMP" "XXX" "RAW"
  81.  
  82.   /* Initialize Variables for Top Strip */
  83.   StripW=ImageW                       /* Same as original */
  84.   StripH=ImageH%StripRatio      /* Percentage of original */
  85.   FinalW=ImageW                       /* Same as original */
  86.   FinalH=ImageH-StripH         /* Leave off old top strip */
  87.   GradDir="UL 0 0 0 UR 0 0 0 LL 255 255 255 LR 255 255 255"
  88.   CALL New_Edge()
  89. END
  90.  
  91. IF SeamFlag=2|SeamFlag=3 THEN DO    /* Process Side Strip */
  92.  
  93.   XSize                 
  94.   ImageW=ADPRO_RESULT
  95.   YSize                 
  96.   ImageH=ADPRO_RESULT
  97.  
  98.   SAVER "TEMP" "XXX" "RAW"
  99.  
  100.   /* Initialize Variables for Side Strip */
  101.   StripW=ImageW%StripRatio
  102.   StripH=ImageH
  103.   FinalW=ImageW-StripW
  104.   FinalH=ImageH
  105.   GradDir="UL 0 0 0 UR 255 255 255 LL 0 0 0 LR 255 255 255"
  106.   CALL New_Edge()
  107. END
  108.  
  109.  
  110. /*
  111. ** CleanUp & Exit
  112. */
  113.  
  114. ADDRESS COMMAND "C:Delete >NIL: T:Strip"
  115. ADDRESS COMMAND "C:Delete >NIL: T:Strip.alpha"
  116.  
  117. Okay1 "Finished!"
  118. CALL ErrorOut 0
  119.  
  120.  
  121.  
  122. /**********************************************************/
  123. /*                   INTERNAL FUNCTIONS                   */
  124. /**********************************************************/
  125.  
  126.  
  127. ErrorOut:
  128.  
  129.   PARSE ARG ExitCode
  130.  
  131.   IF (EXISTS( TempDefaults )) THEN DO
  132.     LOAD_DEFAULTS TempDefaults
  133.     IF (RC ~= 0) THEN DO
  134.       ADPRO_TO_FRONT
  135.       OKAY1 "Error restoring settings."
  136.       END
  137.  
  138.     ADDRESS COMMAND "Delete >NIL:" TempDefaults
  139.   END
  140.  
  141.   EXIT ExitCode
  142.  
  143.  
  144.  
  145. New_Edge:
  146.  
  147. /*
  148. ** Crop Strip & Save to T:
  149. */
  150.  
  151. Operator "CROP_IMAGE" StripW StripH
  152. IF (RC~=0) THEN CALL ErrorOut 10
  153.  
  154. Saver "IFF" "T:Strip" "RAW"                 /* Save to T: */
  155. IF (RC~=0) THEN CALL ErrorOut 10
  156.  
  157.  
  158. /*
  159. ** Create Alpha Gradient For Top Strip Compositing
  160. */
  161.  
  162. Loader "BACKDROP" "XXX" StripW StripH "COLOR" GradDir
  163.       /* NOTE: Specifying "GRAY" will NOT work correctly! */
  164. IF (RC ~= 0) THEN DO
  165.   ADPRO_TO_FRONT
  166.   OKAY1 "Sorry, BACKDROP Loader Failed!"
  167.   CALL ErrorOut 10
  168.   END
  169.  
  170. Saver "IFF" "T:Strip.alpha" "RAW"           /* Save to T: */
  171.  
  172.  
  173. /*
  174. ** Load Original Image, Composite Strip Using Alpha, and
  175. **  Crop New Image Discarding Area of Original Strip
  176. */
  177.  
  178. Loader "TEMP" "XXX"
  179. IF (RC ~= 0) THEN DO
  180.   ADPRO_TO_FRONT
  181.   OKAY1 "Sorry, TEMP Loader Failed!"
  182.   CALL ErrorOut 10
  183.   END
  184.  
  185. Loader "IFF" "T:Strip.alpha" ASALPHA COMPOFFSET,
  186.   ImageW-StripW ImageH-StripH
  187.  
  188. Loader "IFF" "T:Strip" ALPHAMEM COMPOFFSET,
  189.   ImageW-StripW ImageH-StripH
  190.   
  191. Operator "CROP_IMAGE" FinalW FinalH ImageW-FinalW,
  192.   ImageH-FinalH
  193. IF (RC~=0) THEN CALL ErrorOut 10
  194.  
  195.  
  196. RETURN